package com.eastdigit.system.service;

import com.eastdigit.servlet.ReqBean;
import com.eastdigit.system.model.IUser;
import net.sf.json.JSONObject;

import java.util.List;
import java.util.Map;

/**
 * Created by hehz on 2016/6/28.
 */
public interface IUserService<T extends IUser> {
    /**
     * 用户登录
     * 
     * @param userId
     * @param deviceType
     * @param deviceToken
     * @return
     */
    JSONObject login(String userId, String deviceType, String deviceToken);

    /**
     * 查询用户(条件，分页)
     * 
     * @param reqBean
     * @return
     */
    JSONObject queryTable(ReqBean reqBean);

    /**
     * 查找某些部门下的用户
     * 
     * @param deptIds
     * @return
     */
    List<T> queryUserOfDept(List<String> deptIds);

    /**
     * 根据用户编码，获取用户
     * 
     * @param userId
     * @return
     */
    T queryById(String userId);

    /**
     * 根据用户编码，获取用户
     * 
     * @param userCode
     * @return
     */
    T queryByCode(String userCode);

    void add(T user);

    void update(T user);

    void delete(String userId);

    /**
     * 更新用户密码
     * 
     * @param userId
     * @param oldPasword
     * @param newPassword
     */
    void updatePassword(String userId, String oldPasword, String newPassword);

    /**
     * 重置密码
     * 
     * @param userId
     */
    void resetPassword(String userId);

    /**
     * 从参数中获取User
     * 
     * @param reqBean
     * @return
     */
    T getUserFromRequest(ReqBean reqBean);

    Map<String, Object> dealFieldAlias(List<Object> fields, String param);
}
